LZW (Lempel-Ziv-Welch) is a popular loss-less compression/decompression algorithm used to reduce large quantities of data, such as data files, text files, digital images, executable code and many other types of data. Reducing the size of data through LZW compression permits data to be more easily transferred from one device to another, such as over a network or point-to-point connection. LZW compression also reduces the amount of storage area needed to store data on a storage medium.
Once the compressed data is sent to another device or is read from a storage medium, the compressed data is “decompressed,” i.e., returned to its original state prior to being compressed. While the LZW algorithm reduces data sizes, systems used to perform LZW decompression are often too slow to effectively perform decompression. In many instances, the systems rely on software operating on a general-purpose processor to perform the LZW decompression. Current LZW decompression systems often take too long to perform decompression. Such systems (software operating on general-purpose processor) are usually consumed with other tasks and are unable to dedicate enough resources to perform LZW decompression in a timely enough manner, especially when the compressed data is the form of real-time streaming data such as digital images from a video stream. Moreover, the LZW software code used to perform decompression on a processor usually takes too many cycles to execute, causing data to be decompressed too slowly for many applications. As a result, the quality of data may be substantially degraded in certain applications, such as real-time digital image streaming. In other applications, delayed decompression may result in slower downloads of files and execution of executable code, and so forth.